﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CapaPresentacion.Commands;
using CapaPresentacion.Vistas;
using Entidades;
using CapaLogica;
using System.Windows.Input;
using System.Windows;
using System.Windows.Data;
using System.Transactions;

namespace CapaPresentacion.Vistas
{
    class VentanaBusquedaCicloLectivoViewModel
    {
        private RelayCommand buscarCicloLectivoCommand;
        private RelayCommand eliminarCicloLectivoCommand;

        public event EditarEntidad EditarEntidad;
        private string año;
       
        private VentanaBusquedaCicloLectivo view;

        public string Año
        {
            get { return año; }
            set { año = value; }

        }  
     
        public ICommand BuscarCicloLectivoCommand
        {
            get
            {
                return buscarCicloLectivoCommand;
            }
        }

        public ICommand EliminarCicloLectivoCommand
        {
            get
            {
                return eliminarCicloLectivoCommand;
            }
        }
              

        public VentanaBusquedaCicloLectivoViewModel() {}
        
        public VentanaBusquedaCicloLectivoViewModel(VentanaBusquedaCicloLectivo view)
        {
            this.view = view;
            this.buscarCicloLectivoCommand = new RelayCommand(BuscarCicloLectivo);

            this.año = DateTime.Now.Year.ToString();
        }

        public VentanaBusquedaCicloLectivoViewModel(VentanaBusquedaCicloLectivo view, string eliminar)
        {
            this.view = view;
            this.eliminarCicloLectivoCommand = new RelayCommand(EliminarCicloLectivo);
            this.view.btnBuscar.Visibility = Visibility.Collapsed;
            this.view.btnEliminar.Visibility = Visibility.Visible;
            this.view.titulo.Content = "Eliminar Ciclo Lectivo";

            this.año = DateTime.Now.Year.ToString();
        }


        public void BuscarCicloLectivo(object parameter)
        {
            if (this.año.Length == 4)
            {
                CicloLectivo ciclo = new CicloLectivoLogica().ObtenerEntidadParaEditar(Convert.ToInt32(this.año));

                if (ciclo != null)
                {
                    this.EditarEntidad(CasosDeUso.NuevoCicloLectivo, ciclo);
                    this.view.Close();
                }
                else
                    view.lblNoRecords.Visibility = Visibility.Visible;

            }
            else
            {
                VentanaAviso nueva = new VentanaAviso(true, "Se ha producido un error", "El campo 'Año' ha sido ingresado de forma incorrecta");
                nueva.ShowDialog();  

            }

        }

        public void EliminarCicloLectivo(object parameter)
        {
            if (this.año.Length == 4)
            {
                CicloLectivo entidad = new CicloLectivoLogica().ObtenerEntidadParaEditar(Convert.ToInt32(this.año));

                if (entidad != null)
                {
                    if (!new CicloLectivoLogica().TieneTurnos(entidad.IdCicloLectivo))
                    {
                        entidad.Eliminado = true;
                        new CicloLectivoLogica().Modificar(entidad);

                        VentanaAviso nueva = new VentanaAviso(false, "Finalización exitosa", "El ciclo lectivo ha sido eliminado correctamente");
                        nueva.ShowDialog();


                        this.view.Close();

                    }
                    else
                    {
                        VentanaAviso nueva = new VentanaAviso(true, "Se ha producido un error", "El ciclo lectivo que desea eliminar tiene turnos asociados");
                        nueva.ShowDialog();

                    }
                }
                else
                    view.lblNoRecords.Visibility = Visibility.Visible;

            }
            else
            {
                VentanaAviso nueva = new VentanaAviso(true, "Se ha producido un error", "El campo 'Año' ha sido ingresado de forma incorrecta");
                nueva.ShowDialog();

            }

        }



    }
}
